// 导入Pinia的defineStore函数，用于定义一个store
import { defineStore } from 'pinia'
// 导入Vue的ref函数，用于创建响应式引用
import { ref } from 'vue'

// 定义名为"user"的store，用于管理用户相关的数据和状态
export const userStore = defineStore("user", () => {
  // 创建一个响应式引用，用于存储用户信息
  let userInfo = ref({})
  // 创建一个响应式布尔值，用于标识用户是否已登录
  let isLogin = ref(false)
  // 创建一个响应式对象，用于存储用户的当前位置信息
  let currentPos = ref({
    // 默认的经纬度位置，可以根据实际情况进行修改
    latitude: 34.343207, // 纬度
    longitude: 108.939645 // 经度
  })
  // 创建一个响应式布尔值，用于标识是否已经获取了用户的位置信息
  let hasPos = ref(false)

  // 定义一个函数，用于设置用户的位置信息
  function setPos(lat, lon) {
    currentPos.value.latitude = lat // 设置纬度
    currentPos.value.longitude = lon // 设置经度
    hasPos.value = true // 标记已经获取了位置信息
    console.log(currentPos.value) // 控制台输出当前位置信息
  }

  // 定义一个函数，用于添加用户信息
  function addUserInfo(name, password, phone) {
    userInfo.value.name = name // 存储用户名
    userInfo.value.password = password // 存储密码
    userInfo.value.phone = phone // 存储电话号码
    isLogin.value = true // 标记用户已登录
    // 这里可以添加其他需要在用户登录时执行的逻辑
  }

  // 定义一个函数，用于清除用户的登录状态和信息
  function clearUserInfo() {
    // 这里可以添加其他需要在用户登出时执行的逻辑
    userInfo.value = {} // 清空用户信息
    isLogin.value = false // 标记用户未登录
    // 如果存在token，这里可以添加清除token的逻辑
  }

  // 返回store中的响应式数据和函数，使其可以在组件中被使用
  return {
    userInfo, // 用户信息
    isLogin, // 用户登录状态
    addUserInfo, // 添加用户信息的函数
    clearUserInfo, // 清除用户信息的函数
    currentPos, // 当前位置信息
    setPos, // 设置位置信息的函数
    hasPos // 是否已获取位置信息
  }
})